#include<stdio.h>
#include<stdlib.h>
//int main()
//{
//20个字节 - 存放5个整数
//int* p = (int*)malloc(20);
//if (p == NULL)
//{
//	perror("malloc");
//	return 1;
//}
////使用空间
//int i = 0;
//for (i = 0; i < 5; i++)
//{
//	*(p + i) = i + 1;
//}
//释放内存
//free(p);//传递给free函数的是要释放的内存空间的起始地址
//p = NULL;

/*int* p = (int*)malloc(5*sizeof(int));
if (p == NULL)
{
	perror("malloc");
	return 1;
}*/

//int* p = (int*)calloc(5, sizeof(int));           //calloc会把空间初始化为0
//if (p == NULL)
//{
//	perror("calloc");
//	return 1;
//}
//free(p);
//p = NULL;

//	int* p = (int*)malloc(5 * sizeof(int));
//	if (p == NULL)
//	{
//		perror("malloc");
//		return 1;
//	}
//	//使用
//	int i = 0;
//	for (i = 0; i < 5; i++)
//		*(p + i) = i + 1;
//	//希望将空间调整为40个字节
//	int* ptr = (int*)realloc(p, 40);
//	if (ptr != NULL)//调整成功
//	{
//		p = ptr;
//		ptr = NULL;
//		int i = 0;
//		for (i = 5; i < 10; i++)
//			*(p + i) = i + 1;
//		for (i = 0; i < 10; i++)
//			printf("%d ", *(p + i));
//		free(p);
//		p = NULL;
//	}
//	else
//	{
//		perror("realloc");
//		free(p);
//		p = NULL;
//	}
//
//	//realloc(NULL, 20); == malloc(20)
//	return 0;
//}

                                                    //使用malloc函数模拟开辟一个二维数组
//int main()
//{
//	int** arr = (int*)malloc(5 * sizeof(int) * 3);
//	for (int i = 0; i < 3; i++)
//	{
//		arr[i] = (int*)malloc(5 * sizeof(int));
//	}
//	//进行赋值
//	for (int i = 0; i < 3; i++)
//	{
//		for (int j = 0; j < 5; j++)
//		{
//			arr[i][j] = 1;
//		}
//	}
//	//进行打印
//	for (int i = 0; i < 3; i++)
//	{
//		for (int j = 0; j < 5; j++)
//		{
//			printf("%d ", arr[i][j]);
//		}
//		printf("\n");
//	}
//  //释放内存
//  for (int i = 0; i < 3; i++)
//  {
//    free(arr[i]);
//    arr[i] = NULL;
//  }
//  free(arr);
//  arr = NULL;
//	return 0;
//}